# 导入必要的库
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载示例数据集（鸢尾花数据集）
iris = load_iris()
X = iris.data  # 特征
y = iris.target  # 标签

# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 将数据转换为 DMatrix 格式（XGBoost 的高效数据结构）
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置模型参数
params = {
    'objective': 'multi:softmax',  # 多分类任务
    'num_class': 3,                # 类别数
    'max_depth': 3,                # 树的最大深度
    'eta': 0.1,                    # 学习率
    'eval_metric': 'mlogloss'      # 评估指标
}

# 训练模型
num_round = 50  # 迭代次数
bst = xgb.train(params, dtrain, num_round)

# 在测试集上进行预测
y_pred = bst.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"测试集准确率: {accuracy * 100:.2f}%")